Don't assert while a callback is registered If an assert fails while a callback is registered and some data is delivered that attempts to invoke the callback, it'll cause a segfault since the callback is allocated on a part of the stack that's no longer valid. Bug: 183362725 Merged-In: I3a1f8fbf15c24e344fde8e5b44bb93681ef47d38 Change-Id: I2b1895a1f5898b8971ffd820a7d619a09f12495d Test: Run VTS
diff --git a/sensors/2.0/vts/functional/VtsHalSensorsV2_0TargetTest.cpp b/sensors/2.0/vts/functional/VtsHalSensorsV2_0TargetTest.cpp index 8364ba9..a258390 100644 --- a/sensors/2.0/vts/functional/VtsHalSensorsV2_0TargetTest.cpp +++ b/sensors/2.0/vts/functional/VtsHalSensorsV2_0TargetTest.cpp
@@ -390,6 +390,7 @@ // Wait for events to be written back to the Event FMQ callback.waitForEvents(sensors, milliseconds(1000) /* timeout */); + getEnvironment()->unregisterCallback(); for (const auto& s : sensors) { auto events = callback.getEvents(s.sensorHandle); @@ -409,7 +410,6 @@ ASSERT_EQ(lastEvent.u.vec3.status, injectedEvent.u.vec3.status); } - getEnvironment()->unregisterCallback(); ASSERT_EQ(Result::OK, getSensors()->setOperationMode(OperationMode::NORMAL)); } @@ -711,7 +711,7 @@ // Flush the sensor for (int32_t i = 0; i < flushCalls; i++) { Result flushResult = flush(sensor.sensorHandle); - ASSERT_EQ(flushResult, expectedResponse); + EXPECT_EQ(flushResult, expectedResponse); } }